/**
 * 
 */
package neptune.manager.model.topology;

/**
 * Questa classe descrive un end-point di un link. E' stata introdotta per
 * fornire una descrizione generale del link, disaccoppiando dunque il modo in
 * cui il link si realizza (ip-aliasing, one link per interface, ecc.).
 * 
 * @author Roberto Bifulco [info@robertobifulco.it, robertobifulco.it]
 * 
 */
public interface EndPoint {

	/*
	 * TODO questa classe va rivista, poiche' si deve introdurre il concetto che
	 * l'endpoint appartiene ad un nodo e non solo ad un indirizzo o ad una
	 * interfaccia. Bisogna poi vedere come questo si specializza in base alla
	 * tecnica di multiplexing adoperata sul nodo.
	 */

	/**
	 * Questo metodo verifica se questo end point risiede in una particolare
	 * interfaccia di rete. E' necessario questo metodo poiche' a seconda della
	 * tecnica di link multiplexing adoperata, si devono verificare differenti
	 * parametri per dire se un end point si realizza in una interfaccia o in un
	 * altra.
	 * 
	 * @param node
	 * @return
	 */
	public boolean isThisEndPoint(NetworkInterface netInterface);

	/**
	 * Restituisce il tipo di tecnica di link multiplexing adoperata in questo
	 * endpoint
	 * 
	 * @return
	 */
	public int getMultiplexingTech();

	/**
	 * Restituisce il nome del nodo che corrisponde a questo end-Point
	 * 
	 * @return
	 */
	public String getNodeId();
	
	/**
	 * Restituisce, se definito, il nome dell'interfaccia che corrisponde a questo end-point
	 * @return
	 */
	public String getInterfaceId();

}
